export default {

	// 检测密码强度
	checkPwd(str) {
		if (str.length <= 0) {
			alert('密码不得为空')
			return
		} else if (str.length < 6) {
			alert('密码长度不得小于6位')
			return
		} else if (!(/^(?=.*?[0-9])(?=.*?[a-z])[0-9a-z]{6,}$/)) {
			alert('密码必须是字母+数字的组合')
			return
		} else if (/[~!@#$%^&*()_+`\-={}:";'<>?,.\/]/.test(str)) {
			alert('密码不能有特殊字符')
			return
		}
	},

	// 邮箱
	isEmail(s) {
		return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
	},

	// 手机号码
	isMobile(s) {
		return /^1[0-9]{10}$/.test(s)
	},

	//匹配小数点后两位
	doubleTwoPoint(value) {
		return (/^(\d+\.\d{2})$/).test(value)
	},
	// 验证非零的正整数和两位小数
	numberNoZeroNumberPoint(value) {
		return (/(^\+?[1-9][0-9]*$)|(^(\d+\.\d{2})$)/).test(value)
	},
	// 验证大于等于0的正整数和小数点后最多俩位
	numberCheckPoint() {
		return (/(^\+?[0-9][0-9]*$)|(^(\d+\.\d{1,2})$)/).test(value)
	},
	// 验证非零的正整数
	numberNoZeroPosiReg(value) {
		return (/^\+?[1-9][0-9]*$/).test(value)
	},
	// 大于等于0的正整数,不允许小数
	numberCheck(value) {
		return (/^\+?[0-9][0-9]*$/, '').test(value)
	},
	// js清空特殊字符
	EmptySpecial(value) {
		value = value.replace(/[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~！@#￥%……&*（）——\-+={}|《》？：“”【】、；‘'，。、]/g, "")
		return value
	},

	// 电话号码
	isPhone(s) {
		return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
	},

	// 严格的身份证校验
	IDCardCheck(num) {
		num = num.toUpperCase();
		//身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。   
		if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
			console.log('输入的身份证号长度不对，或者号码不符合规定！\n15位号码应全为数字，18位号码末位可以为数字或X。');
			return false;
		}
		//校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。 
		//下面分别分析出生日期和校验位 
		let len, re;
		len = num.length;
		if (len == 15) {
			re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
			let arrSplit = num.match(re);

			//检查生日日期是否正确 
			let dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
			let bGoodDay;
			bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (
				dtmBirth.getDate() == Number(arrSplit[4]));
			if (!bGoodDay) {
				console.log('输入的身份证号里出生日期不对！');
				return false;
			} else {
				//将15位身份证转成18位 
				//校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。 
				let arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
				let arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
				let nTemp = 0,
					i;
				num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
				for (i = 0; i < 17; i++) {
					nTemp += num.substr(i, 1) * arrInt[i];
				}
				num += arrCh[nTemp % 11];
				return true;
			}
		}
		if (len == 18) {
			re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
			let arrSplit = num.match(re);

			//检查生日日期是否正确 
			let dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
			let bGoodDay;
			bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) &&
				(dtmBirth.getDate() == Number(arrSplit[4]));
			if (!bGoodDay) {
				// alert(dtmBirth.getYear());
				//  alert(arrSplit[2]);
				console.log('输入的身份证号里出生日期不对！');
				return false;
			} else {
				//检验18位身份证的校验码是否正确。 
				//校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。 
				let valnum;
				let arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
				let arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
				let nTemp = 0,
					i;
				for (i = 0; i < 17; i++) {
					nTemp += num.substr(i, 1) * arrInt[i];
				}
				valnum = arrCh[nTemp % 11];
				if (valnum != num.substr(17, 1)) {
					console.log('18位身份证的校验码不正确！'); //应该为： + valnum
					return false;
				}
				return true;
			}
		}
		return false;
	},


}
